/**
 * @brief 标准流管道服务器
 * @version 1.0
 * @author 宋炜
 */

#pragma once

#include <atomic>
#include <condition_variable>
#include <mutex>
#include <thread>

#include "ipcItfc.hpp"

class pipeSvr : public ipcItfc
{
private:
    std::atomic< bool >     m_is_running__{ false };   
    std::thread             m_thd__;
private:
    /**
     * @brief 后台以线程的方式运行从标注输入流读取数据，然后通知日志文件引擎保存数据
     */
    void backend__();
public:
    /**
     * @brief 构造函数
     * @details 该构造函数负责初始化管道服务器
     */
    pipeSvr();
    ~pipeSvr();
    /**
     * @brief 启动管道服务器
     * @details 该函数负责启动管道服务器，开始从标准输入流读取数据
     * @param sw true 启动 false 停止
     * @return true 启动成功
     * @return false 启动失败
     */
    virtual bool start( bool sw ) override;
};